//package com.btb.adapter.contract;
//
//import io.reactivex.Flowable;
//import io.reactivex.functions.Function;
//import java.math.BigInteger;
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.HashMap;
//import java.util.List;
//import org.web3j.abi.EventEncoder;
//import org.web3j.abi.TypeReference;
//import org.web3j.abi.datatypes.Address;
//import org.web3j.abi.datatypes.Bool;
//import org.web3j.abi.datatypes.DynamicArray;
//import org.web3j.abi.datatypes.Event;
//import org.web3j.abi.datatypes.Type;
//import org.web3j.abi.datatypes.generated.Bytes32;
//import org.web3j.abi.datatypes.generated.Uint256;
//import org.web3j.crypto.Credentials;
//import org.web3j.protocol.Web3j;
//import org.web3j.protocol.core.DefaultBlockParameter;
//import org.web3j.protocol.core.RemoteCall;
//import org.web3j.protocol.core.RemoteFunctionCall;
//import org.web3j.protocol.core.methods.request.EthFilter;
//import org.web3j.protocol.core.methods.response.BaseEventResponse;
//import org.web3j.protocol.core.methods.response.Log;
//import org.web3j.protocol.core.methods.response.TransactionReceipt;
//import org.web3j.tx.Contract;
//import org.web3j.tx.TransactionManager;
//import org.web3j.tx.gas.ContractGasProvider;
//
///**
// * <p>Auto generated code.
// * <p><strong>Do not modify!</strong>
// * <p>Please use the <a href="https://docs.web3j.io/command_line.html">web3j command line tools</a>,
// * or the org.web3j.codegen.SolidityFunctionWrapperGenerator in the
// * <a href="https://github.com/web3j/web3j/tree/master/codegen">codegen module</a> to update.
// *
// * <p>Generated with web3j version 4.5.5.
// */
//@SuppressWarnings("rawtypes")
//public class HeroCon extends Contract {
//    private static final String BINARY = "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f7375706572206865726f000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5355484500000000000000000000000000000000000000000000000000000000815250816000908051906020019062000096929190620000d3565b508060019080519060200190620000af929190620000d3565b5050506000600d60006101000a81548160ff021916908315150217905550620001e8565b828054620000e19062000183565b90600052602060002090601f01602090048101928262000105576000855562000151565b82601f106200012057805160ff191683800117855562000151565b8280016001018555821562000151579182015b828111156200015057825182559160200191906001019062000133565b5b50905062000160919062000164565b5090565b5b808211156200017f57600081600090555060010162000165565b5090565b600060028204905060018216806200019c57607f821691505b60208210811415620001b357620001b2620001b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614c0480620001f86000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a22cb46511610097578063c87b56dd11610071578063c87b56dd14610542578063ca15c87314610572578063d547741f146105a2578063e985e9c5146105be576101c4565b8063a22cb465146104ee578063b00783441461050a578063b88d4fde14610526576101c4565b806391d14854116100d357806391d148541461046657806395d89b41146104965780639af50254146104b4578063a217fddf146104d0576101c4565b80636352211e146103d657806370a08231146104065780639010d07c14610436576101c4565b8063248a9ca31161016657806336568abe1161014057806336568abe1461035057806342842e0e1461036c5780634f6ccce7146103885780635c975abb146103b8576101c4565b8063248a9ca3146102d45780632f2ff15d146103045780632f745c5914610320576101c4565b8063081812fc116101a2578063081812fc1461024e578063095ea7b31461027e57806318160ddd1461029a57806323b872dd146102b8576101c4565b8063011d3f36146101c957806301ffc9a71461020057806306fdde0314610230575b600080fd5b6101e360048036038101906101de9190613903565b6105ee565b6040516101f7989796959493929190614617565b60405180910390f35b61021a600480360381019061021591906138b1565b61084a565b6040516102279190614344565b60405180910390f35b61023861085c565b604051610245919061437a565b60405180910390f35b61026860048036038101906102639190613903565b6108ee565b6040516102759190614268565b60405180910390f35b610298600480360381019061029391906136b1565b610973565b005b6102a2610a8b565b6040516102af91906145fc565b60405180910390f35b6102d260048036038101906102cd9190613557565b610a98565b005b6102ee60048036038101906102e99190613810565b610af8565b6040516102fb919061435f565b60405180910390f35b61031e60048036038101906103199190613839565b610b18565b005b61033a600480360381019061033591906136b1565b610b4c565b60405161034791906145fc565b60405180910390f35b61036a60048036038101906103659190613839565b610bf1565b005b61038660048036038101906103819190613557565b610c25565b005b6103a2600480360381019061039d9190613903565b610c45565b6040516103af91906145fc565b60405180910390f35b6103c0610cdc565b6040516103cd9190614344565b60405180910390f35b6103f060048036038101906103eb9190613903565b610cf3565b6040516103fd9190614268565b60405180910390f35b610420600480360381019061041b91906134f2565b610da5565b60405161042d91906145fc565b60405180910390f35b610450600480360381019061044b9190613875565b610e5d565b60405161045d9190614268565b60405180910390f35b610480600480360381019061047b9190613839565b610e8c565b60405161048d9190614344565b60405180910390f35b61049e610ef7565b6040516104ab919061437a565b60405180910390f35b6104ce60048036038101906104c99190613621565b610f89565b005b6104d86111ea565b6040516104e5919061435f565b60405180910390f35b61050860048036038101906105039190613675565b6111f1565b005b610524600480360381019061051f91906136ed565b611372565b005b610540600480360381019061053b91906135a6565b6115c5565b005b61055c60048036038101906105579190613903565b611627565b604051610569919061437a565b60405180910390f35b61058c60048036038101906105879190613810565b611639565b60405161059991906145fc565b60405180910390f35b6105bc60048036038101906105b79190613839565b61165d565b005b6105d860048036038101906105d3919061351b565b611691565b6040516105e59190614344565b60405180910390f35b600080600080600060608060606000601060008b815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201805461065e906149e2565b80601f016020809104026020016040519081016040528092919081815260200182805461068a906149e2565b80156106d75780601f106106ac576101008083540402835291602001916106d7565b820191906000526020600020905b8154815290600101906020018083116106ba57829003601f168201915b505050505081526020016006820180546106f0906149e2565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906149e2565b80156107695780601f1061073e57610100808354040283529160200191610769565b820191906000526020600020905b81548152906001019060200180831161074c57829003601f168201915b50505050508152602001600782018054610782906149e2565b80601f01602080910402602001604051908101604052809291908181526020018280546107ae906149e2565b80156107fb5780601f106107d0576101008083540402835291602001916107fb565b820191906000526020600020905b8154815290600101906020018083116107de57829003601f168201915b505050505081525050905080600001519850806020015197508060400151965080606001519550806080015194508060a0015193508060c0015192508060e00151915050919395975091939597565b600061085582611725565b9050919050565b60606000805461086b906149e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610897906149e2565b80156108e45780601f106108b9576101008083540402835291602001916108e4565b820191906000526020600020905b8154815290600101906020018083116108c757829003601f168201915b5050505050905090565b60006108f98261179f565b610938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092f9061451c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097e82610cf3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e69061457c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a0e61180b565b73ffffffffffffffffffffffffffffffffffffffff161480610a3d5750610a3c81610a3761180b565b611691565b5b610a7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a739061447c565b60405180910390fd5b610a868383611813565b505050565b6000600980549050905090565b610aa9610aa361180b565b826118cc565b610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adf9061459c565b60405180910390fd5b610af38383836119aa565b505050565b6000600b6000838152602001908152602001600020600101549050919050565b610b228282611c06565b610b4781600c6000858152602001908152602001600020611c2f90919063ffffffff16565b505050565b6000610b5783610da5565b8210610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f906143bc565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610bfb8282611c5f565b610c2081600c6000858152602001908152602001600020611ce290919063ffffffff16565b505050565b610c40838383604051806020016040528060008152506115c5565b505050565b6000610c4f610a8b565b8210610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c87906145bc565b60405180910390fd5b60098281548110610cca577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b6000600d60009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d93906144bc565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d9061449c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610e8482600c6000868152602001908152602001600020611d1290919063ffffffff16565b905092915050565b6000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060018054610f06906149e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f32906149e2565b8015610f7f5780601f10610f5457610100808354040283529160200191610f7f565b820191906000526020600020905b815481529060010190602001808311610f6257829003601f168201915b5050505050905090565b60005b81518110156111aa57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610fe5906149b8565b9190505550600060116000848481518110611029577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600e6000848481518110611095577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060106000838381518110611126577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000808201600090556001820160009055600282016000905560038201600090556004820160009055600582016000611175919061322b565b600682016000611185919061322b565b600782016000611195919061322b565b505080806111a290614a14565b915050610f8c565b507f5f96d025b48a53c0a0d2ff728fa26910c472cdaba065b1b9b6d08c2b4d89c4db3383836040516111de93929190614283565b60405180910390a15050565b6000801b81565b6111f961180b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061441c565b60405180910390fd5b806005600061127461180b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661132161180b565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113669190614344565b60405180910390a35050565b601160008a815260200190815260200160002060009054906101000a900460ff166113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c9906144dc565b60405180910390fd5b60405180610100016040528089815260200188815260200187815260200186815260200185815260200184815260200183815260200182815250601060008b8152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501908051906020019061146d92919061326b565b5060c082015181600601908051906020019061148a92919061326b565b5060e08201518160070190805190602001906114a792919061326b565b5090505089600e60008b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061154d90614a14565b91905055506001601160008b815260200190815260200160002060006101000a81548160ff0219169083151502179055507fb4bd8cf96591b7383e76261d2040dec6410d89f8dbebb39e7e6c58f9ea8fd144338b8b6040516115b1939291906142c1565b60405180910390a150505050505050505050565b6115d66115d061180b565b836118cc565b611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c9061459c565b60405180910390fd5b61162184848484611d2c565b50505050565b606061163282611d88565b9050919050565b6000611656600c6000848152602001908152602001600020611eda565b9050919050565b6116678282611eef565b61168c81600c6000858152602001908152602001600020611ce290919063ffffffff16565b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611798575061179782611f18565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661188683610cf3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006118d78261179f565b611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061443c565b60405180910390fd5b600061192183610cf3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061199057508373ffffffffffffffffffffffffffffffffffffffff16611978846108ee565b73ffffffffffffffffffffffffffffffffffffffff16145b806119a157506119a08185611691565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166119ca82610cf3565b73ffffffffffffffffffffffffffffffffffffffff1614611a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a179061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a87906143fc565b60405180910390fd5b611a9b838383611f92565b611aa6600082611813565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611af691906148c4565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4d91906147e3565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611c0f82610af8565b611c2081611c1b61180b565b611fea565b611c2a8383612087565b505050565b6000611c57836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612168565b905092915050565b611c6761180b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccb906145dc565b60405180910390fd5b611cde82826121d8565b5050565b6000611d0a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122ba565b905092915050565b6000611d218360000183612440565b60001c905092915050565b611d378484846119aa565b611d4384848484612491565b611d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d79906143dc565b60405180910390fd5b50505050565b6060611d938261179f565b611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc9906144fc565b60405180910390fd5b6000600660008481526020019081526020016000208054611df2906149e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1e906149e2565b8015611e6b5780601f10611e4057610100808354040283529160200191611e6b565b820191906000526020600020905b815481529060010190602001808311611e4e57829003601f168201915b505050505090506000611e7c612628565b9050600081511415611e92578192505050611ed5565b600082511115611ec7578082604051602001611eaf92919061420a565b60405160208183030381529060405292505050611ed5565b611ed08461263f565b925050505b919050565b6000611ee8826000016126e6565b9050919050565b611ef882610af8565b611f0981611f0461180b565b611fea565b611f1383836121d8565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f8b5750611f8a826126f7565b5b9050919050565b611f9a610cdc565b15611fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd19061445c565b60405180910390fd5b611fe5838383612771565b505050565b611ff48282610e8c565b612083576120198173ffffffffffffffffffffffffffffffffffffffff166014612885565b6120278360001c6020612885565b60405160200161203892919061422e565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a919061437a565b60405180910390fd5b5050565b6120918282610e8c565b612164576001600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061210961180b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006121748383612b7f565b6121cd5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506121d2565b600090505b92915050565b6121e28282610e8c565b156122b6576000600b600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061225b61180b565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080836001016000848152602001908152602001600020549050600081146124345760006001826122ec91906148c4565b905060006001866000018054905061230491906148c4565b90508181146123bf57600086600001828154811061234b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080876000018481548110612395577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806123f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061243a565b60009150505b92915050565b600082600001828154811061247e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905092915050565b60006124b28473ffffffffffffffffffffffffffffffffffffffff16612ba2565b1561261b578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124db61180b565b8786866040518563ffffffff1660e01b81526004016124fd94939291906142f8565b602060405180830381600087803b15801561251757600080fd5b505af192505050801561254857506040513d601f19601f8201168201806040525081019061254591906138da565b60015b6125cb573d8060008114612578576040519150601f19603f3d011682016040523d82523d6000602084013e61257d565b606091505b506000815114156125c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ba906143dc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612620565b600190505b949350505050565b606060405180602001604052806000815250905090565b606061264a8261179f565b612689576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126809061455c565b60405180910390fd5b6000612693612628565b905060008151116126b357604051806020016040528060008152506126de565b806126bd84612bb5565b6040516020016126ce92919061420a565b6040516020818303038152906040525b915050919050565b600081600001805490509050919050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061276a575061276982612d62565b5b9050919050565b61277c838383612e44565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127bf576127ba81612e49565b6127fe565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146127fd576127fc8382612e92565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128415761283c81612fff565b612880565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461287f5761287e8282613142565b5b5b505050565b606060006002836002612898919061486a565b6128a291906147e3565b67ffffffffffffffff8111156128e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129135781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612971577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106129fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002612a3b919061486a565b612a4591906147e3565b90505b6001811115612b31577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110612aad577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b1a60f81b828281518110612aea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080612b2a906149b8565b9050612a48565b5060008414612b75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6c9061439c565b60405180910390fd5b8091505092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600080823b905060008111915050919050565b60606000821415612bfd576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612d5d565b600082905060005b60008214612c2f578080612c1890614a14565b915050600a82612c289190614839565b9150612c05565b60008167ffffffffffffffff811115612c71577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612ca35781602001600182028036833780820191505090505b5090505b60008514612d5657600182612cbc91906148c4565b9150600a85612ccb9190614a5d565b6030612cd791906147e3565b60f81b818381518110612d13577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612d4f9190614839565b9450612ca7565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612e2d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612e3d5750612e3c826131c1565b5b9050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612e9f84610da5565b612ea991906148c4565b9050600060086000848152602001908152602001600020549050818114612f8e576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160098054905061301391906148c4565b90506000600a6000848152602001908152602001600020549050600060098381548110613069577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905080600983815481106130b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480613126577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061314d83610da5565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b508054613237906149e2565b6000825580601f106132495750613268565b601f01602090049060005260206000209081019061326791906132f1565b5b50565b828054613277906149e2565b90600052602060002090601f01602090048101928261329957600085556132e0565b82601f106132b257805160ff19168380011785556132e0565b828001600101855582156132e0579182015b828111156132df5782518255916020019190600101906132c4565b5b5090506132ed91906132f1565b5090565b5b8082111561330a5760008160009055506001016132f2565b5090565b600061332161331c846146db565b6146aa565b9050808382526020820190508285602086028201111561334057600080fd5b60005b85811015613370578161335688826134dd565b845260208401935060208301925050600181019050613343565b5050509392505050565b600061338d61338884614707565b6146aa565b9050828152602081018484840111156133a557600080fd5b6133b0848285614976565b509392505050565b60006133cb6133c684614737565b6146aa565b9050828152602081018484840111156133e357600080fd5b6133ee848285614976565b509392505050565b60008135905061340581614b5b565b92915050565b600082601f83011261341c57600080fd5b813561342c84826020860161330e565b91505092915050565b60008135905061344481614b72565b92915050565b60008135905061345981614b89565b92915050565b60008135905061346e81614ba0565b92915050565b60008151905061348381614ba0565b92915050565b600082601f83011261349a57600080fd5b81356134aa84826020860161337a565b91505092915050565b600082601f8301126134c457600080fd5b81356134d48482602086016133b8565b91505092915050565b6000813590506134ec81614bb7565b92915050565b60006020828403121561350457600080fd5b6000613512848285016133f6565b91505092915050565b6000806040838503121561352e57600080fd5b600061353c858286016133f6565b925050602061354d858286016133f6565b9150509250929050565b60008060006060848603121561356c57600080fd5b600061357a868287016133f6565b935050602061358b868287016133f6565b925050604061359c868287016134dd565b9150509250925092565b600080600080608085870312156135bc57600080fd5b60006135ca878288016133f6565b94505060206135db878288016133f6565b93505060406135ec878288016134dd565b925050606085013567ffffffffffffffff81111561360957600080fd5b61361587828801613489565b91505092959194509250565b6000806040838503121561363457600080fd5b6000613642858286016133f6565b925050602083013567ffffffffffffffff81111561365f57600080fd5b61366b8582860161340b565b9150509250929050565b6000806040838503121561368857600080fd5b6000613696858286016133f6565b92505060206136a785828601613435565b9150509250929050565b600080604083850312156136c457600080fd5b60006136d2858286016133f6565b92505060206136e3858286016134dd565b9150509250929050565b6000806000806000806000806000806101408b8d03121561370d57600080fd5b600061371b8d828e016133f6565b9a5050602061372c8d828e016134dd565b995050604061373d8d828e016134dd565b985050606061374e8d828e016134dd565b975050608061375f8d828e016134dd565b96505060a06137708d828e016134dd565b95505060c06137818d828e016134dd565b94505060e08b013567ffffffffffffffff81111561379e57600080fd5b6137aa8d828e016134b3565b9350506101008b013567ffffffffffffffff8111156137c857600080fd5b6137d48d828e016134b3565b9250506101208b013567ffffffffffffffff8111156137f257600080fd5b6137fe8d828e016134b3565b9150509295989b9194979a5092959850565b60006020828403121561382257600080fd5b60006138308482850161344a565b91505092915050565b6000806040838503121561384c57600080fd5b600061385a8582860161344a565b925050602061386b858286016133f6565b9150509250929050565b6000806040838503121561388857600080fd5b60006138968582860161344a565b92505060206138a7858286016134dd565b9150509250929050565b6000602082840312156138c357600080fd5b60006138d18482850161345f565b91505092915050565b6000602082840312156138ec57600080fd5b60006138fa84828501613474565b91505092915050565b60006020828403121561391557600080fd5b6000613923848285016134dd565b91505092915050565b600061393883836141ec565b60208301905092915050565b61394d816148f8565b82525050565b600061395e82614777565b61396881856147a5565b935061397383614767565b8060005b838110156139a457815161398b888261392c565b975061399683614798565b925050600181019050613977565b5085935050505092915050565b6139ba8161490a565b82525050565b6139c981614916565b82525050565b60006139da82614782565b6139e481856147b6565b93506139f4818560208601614985565b6139fd81614b4a565b840191505092915050565b6000613a138261478d565b613a1d81856147c7565b9350613a2d818560208601614985565b613a3681614b4a565b840191505092915050565b6000613a4c8261478d565b613a5681856147d8565b9350613a66818560208601614985565b80840191505092915050565b6000613a7f6020836147c7565b91507f537472696e67733a20686578206c656e67746820696e73756666696369656e746000830152602082019050919050565b6000613abf602b836147c7565b91507f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008301527f74206f6620626f756e64730000000000000000000000000000000000000000006020830152604082019050919050565b6000613b256032836147c7565b91507f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008301527f63656976657220696d706c656d656e74657200000000000000000000000000006020830152604082019050919050565b6000613b8b6024836147c7565b91507f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613bf16019836147c7565b91507f4552433732313a20617070726f766520746f2063616c6c6572000000000000006000830152602082019050919050565b6000613c31602c836147c7565b91507f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613c976010836147c7565b91507f5061757361626c653a20706175736564000000000000000000000000000000006000830152602082019050919050565b6000613cd76038836147c7565b91507f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008301527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006020830152604082019050919050565b6000613d3d602a836147c7565b91507f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008301527f726f2061646472657373000000000000000000000000000000000000000000006020830152604082019050919050565b6000613da36029836147c7565b91507f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008301527f656e7420746f6b656e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613e096014836147c7565b91507f74686973206865726f206973207570636861696e0000000000000000000000006000830152602082019050919050565b6000613e496031836147c7565b91507f45524337323155524953746f726167653a2055524920717565727920666f722060008301527f6e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006020830152604082019050919050565b6000613eaf602c836147c7565b91507f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008301527f697374656e7420746f6b656e00000000000000000000000000000000000000006020830152604082019050919050565b6000613f156029836147c7565b91507f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008301527f73206e6f74206f776e00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613f7b602f836147c7565b91507f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008301527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006020830152604082019050919050565b6000613fe16021836147c7565b91507f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008301527f72000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006140476031836147c7565b91507f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008301527f776e6572206e6f7220617070726f7665640000000000000000000000000000006020830152604082019050919050565b60006140ad602c836147c7565b91507f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008301527f7574206f6620626f756e647300000000000000000000000000000000000000006020830152604082019050919050565b60006141136017836147d8565b91507f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006000830152601782019050919050565b60006141536011836147d8565b91507f206973206d697373696e6720726f6c65200000000000000000000000000000006000830152601182019050919050565b6000614193602f836147c7565b91507f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008301527f20726f6c657320666f722073656c6600000000000000000000000000000000006020830152604082019050919050565b6141f58161496c565b82525050565b6142048161496c565b82525050565b60006142168285613a41565b91506142228284613a41565b91508190509392505050565b600061423982614106565b91506142458285613a41565b915061425082614146565b915061425c8284613a41565b91508190509392505050565b600060208201905061427d6000830184613944565b92915050565b60006060820190506142986000830186613944565b6142a56020830185613944565b81810360408301526142b78184613953565b9050949350505050565b60006060820190506142d66000830186613944565b6142e36020830185613944565b6142f060408301846141fb565b949350505050565b600060808201905061430d6000830187613944565b61431a6020830186613944565b61432760408301856141fb565b818103606083015261433981846139cf565b905095945050505050565b600060208201905061435960008301846139b1565b92915050565b600060208201905061437460008301846139c0565b92915050565b600060208201905081810360008301526143948184613a08565b905092915050565b600060208201905081810360008301526143b581613a72565b9050919050565b600060208201905081810360008301526143d581613ab2565b9050919050565b600060208201905081810360008301526143f581613b18565b9050919050565b6000602082019050818103600083015261441581613b7e565b9050919050565b6000602082019050818103600083015261443581613be4565b9050919050565b6000602082019050818103600083015261445581613c24565b9050919050565b6000602082019050818103600083015261447581613c8a565b9050919050565b6000602082019050818103600083015261449581613cca565b9050919050565b600060208201905081810360008301526144b581613d30565b9050919050565b600060208201905081810360008301526144d581613d96565b9050919050565b600060208201905081810360008301526144f581613dfc565b9050919050565b6000602082019050818103600083015261451581613e3c565b9050919050565b6000602082019050818103600083015261453581613ea2565b9050919050565b6000602082019050818103600083015261455581613f08565b9050919050565b6000602082019050818103600083015261457581613f6e565b9050919050565b6000602082019050818103600083015261459581613fd4565b9050919050565b600060208201905081810360008301526145b58161403a565b9050919050565b600060208201905081810360008301526145d5816140a0565b9050919050565b600060208201905081810360008301526145f581614186565b9050919050565b600060208201905061461160008301846141fb565b92915050565b60006101008201905061462d600083018b6141fb565b61463a602083018a6141fb565b61464760408301896141fb565b61465460608301886141fb565b61466160808301876141fb565b81810360a08301526146738186613a08565b905081810360c08301526146878185613a08565b905081810360e083015261469b8184613a08565b90509998505050505050505050565b6000604051905081810181811067ffffffffffffffff821117156146d1576146d0614b1b565b5b8060405250919050565b600067ffffffffffffffff8211156146f6576146f5614b1b565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561472257614721614b1b565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561475257614751614b1b565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006147ee8261496c565b91506147f98361496c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561482e5761482d614a8e565b5b828201905092915050565b60006148448261496c565b915061484f8361496c565b92508261485f5761485e614abd565b5b828204905092915050565b60006148758261496c565b91506148808361496c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148b9576148b8614a8e565b5b828202905092915050565b60006148cf8261496c565b91506148da8361496c565b9250828210156148ed576148ec614a8e565b5b828203905092915050565b60006149038261494c565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156149a3578082015181840152602081019050614988565b838111156149b2576000848401525b50505050565b60006149c38261496c565b915060008214156149d7576149d6614a8e565b5b600182039050919050565b600060028204905060018216806149fa57607f821691505b60208210811415614a0e57614a0d614aec565b5b50919050565b6000614a1f8261496c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614a5257614a51614a8e565b5b600182019050919050565b6000614a688261496c565b9150614a738361496c565b925082614a8357614a82614abd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b614b64816148f8565b8114614b6f57600080fd5b50565b614b7b8161490a565b8114614b8657600080fd5b50565b614b9281614916565b8114614b9d57600080fd5b50565b614ba981614920565b8114614bb457600080fd5b50565b614bc08161496c565b8114614bcb57600080fd5b5056fea2646970667358221220527916e0fd3eb135d5c1fc98c21a08e6c22eb8a37c6b388db657600476278ab564736f6c63430008000033";
//
//    public static final String FUNC_DEFAULT_ADMIN_ROLE = "DEFAULT_ADMIN_ROLE";
//
//    public static final String FUNC_APPROVE = "approve";
//
//    public static final String FUNC_BALANCEOF = "balanceOf";
//
//    public static final String FUNC_GETAPPROVED = "getApproved";
//
//    public static final String FUNC_GETROLEADMIN = "getRoleAdmin";
//
//    public static final String FUNC_GETROLEMEMBER = "getRoleMember";
//
//    public static final String FUNC_GETROLEMEMBERCOUNT = "getRoleMemberCount";
//
//    public static final String FUNC_GRANTROLE = "grantRole";
//
//    public static final String FUNC_HASROLE = "hasRole";
//
//    public static final String FUNC_ISAPPROVEDFORALL = "isApprovedForAll";
//
//    public static final String FUNC_NAME = "name";
//
//    public static final String FUNC_OWNEROF = "ownerOf";
//
//    public static final String FUNC_PAUSED = "paused";
//
//    public static final String FUNC_RENOUNCEROLE = "renounceRole";
//
//    public static final String FUNC_REVOKEROLE = "revokeRole";
//
//    public static final String FUNC_safeTransferFrom = "safeTransferFrom";
//
//    public static final String FUNC_SETAPPROVALFORALL = "setApprovalForAll";
//
//    public static final String FUNC_SYMBOL = "symbol";
//
//    public static final String FUNC_TOKENBYINDEX = "tokenByIndex";
//
//    public static final String FUNC_TOKENOFOWNERBYINDEX = "tokenOfOwnerByIndex";
//
//    public static final String FUNC_TOTALSUPPLY = "totalSupply";
//
//    public static final String FUNC_TRANSFERFROM = "transferFrom";
//
//    public static final String FUNC_TOKENURI = "tokenURI";
//
//    public static final String FUNC_SUPPORTSINTERFACE = "supportsInterface";
//
//    public static final String FUNC_UPCHAIN = "upChain";
//
//    public static final String FUNC_OFFCHAIN = "offChain";
//
//    public static final String FUNC_HERODETAIL = "heroDetail";
//
//    public static final Event APPROVAL_EVENT = new Event("Approval",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>(true) {}));
//    ;
//
//    public static final Event APPROVALFORALL_EVENT = new Event("ApprovalForAll",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Bool>() {}));
//    ;
//
//    public static final Event OFFCHAINEVENT_EVENT = new Event("OffChainEvent",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<DynamicArray<Uint256>>() {}));
//    ;
//
//    public static final Event PAUSED_EVENT = new Event("Paused",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
//    ;
//
//    public static final Event ROLEADMINCHANGED_EVENT = new Event("RoleAdminChanged",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>(true) {}, new TypeReference<Bytes32>(true) {}, new TypeReference<Bytes32>(true) {}));
//    ;
//
//    public static final Event ROLEGRANTED_EVENT = new Event("RoleGranted",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}));
//    ;
//
//    public static final Event ROLEREVOKED_EVENT = new Event("RoleRevoked",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Bytes32>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}));
//    ;
//
//    public static final Event TRANSFER_EVENT = new Event("Transfer",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>(true) {}, new TypeReference<Address>(true) {}, new TypeReference<Uint256>(true) {}));
//    ;
//
//    public static final Event UNPAUSED_EVENT = new Event("Unpaused",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}));
//    ;
//
//    public static final Event UPCHAINEVENT_EVENT = new Event("UpChainEvent",
//            Arrays.<TypeReference<?>>asList(new TypeReference<Address>() {}, new TypeReference<Address>() {}, new TypeReference<Uint256>() {}));
//    ;
//
//    protected static final HashMap<String, String> _addresses;
//
//    static {
//        _addresses = new HashMap<String, String>();
//    }
//
//    @Deprecated
//    protected HeroCon(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
//        super(BINARY, contractAddress, web3j, credentials, gasPrice, gasLimit);
//    }
//
//    protected HeroCon(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
//        super(BINARY, contractAddress, web3j, credentials, contractGasProvider);
//    }
//
//    @Deprecated
//    protected HeroCon(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
//        super(BINARY, contractAddress, web3j, transactionManager, gasPrice, gasLimit);
//    }
//
//    protected HeroCon(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
//        super(BINARY, contractAddress, web3j, transactionManager, contractGasProvider);
//    }
//
//    public List<ApprovalEventResponse> getApprovalEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(APPROVAL_EVENT, transactionReceipt);
//        ArrayList<ApprovalEventResponse> responses = new ArrayList<ApprovalEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            ApprovalEventResponse typedResponse = new ApprovalEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.approved = (String) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<ApprovalEventResponse> approvalEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, ApprovalEventResponse>() {
//            @Override
//            public ApprovalEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(APPROVAL_EVENT, log);
//                ApprovalEventResponse typedResponse = new ApprovalEventResponse();
//                typedResponse.log = log;
//                typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.approved = (String) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<ApprovalEventResponse> approvalEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(APPROVAL_EVENT));
//        return approvalEventFlowable(filter);
//    }
//
//    public List<ApprovalForAllEventResponse> getApprovalForAllEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(APPROVALFORALL_EVENT, transactionReceipt);
//        ArrayList<ApprovalForAllEventResponse> responses = new ArrayList<ApprovalForAllEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            ApprovalForAllEventResponse typedResponse = new ApprovalForAllEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.operator = (String) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.approved = (Boolean) eventValues.getNonIndexedValues().get(0).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<ApprovalForAllEventResponse> approvalForAllEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, ApprovalForAllEventResponse>() {
//            @Override
//            public ApprovalForAllEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(APPROVALFORALL_EVENT, log);
//                ApprovalForAllEventResponse typedResponse = new ApprovalForAllEventResponse();
//                typedResponse.log = log;
//                typedResponse.owner = (String) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.operator = (String) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.approved = (Boolean) eventValues.getNonIndexedValues().get(0).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<ApprovalForAllEventResponse> approvalForAllEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(APPROVALFORALL_EVENT));
//        return approvalForAllEventFlowable(filter);
//    }
//
//    public List<OffChainEventEventResponse> getOffChainEventEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(OFFCHAINEVENT_EVENT, transactionReceipt);
//        ArrayList<OffChainEventEventResponse> responses = new ArrayList<OffChainEventEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            OffChainEventEventResponse typedResponse = new OffChainEventEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse._operateAddr = (String) eventValues.getNonIndexedValues().get(0).getValue();
//            typedResponse._targetAddr = (String) eventValues.getNonIndexedValues().get(1).getValue();
//            typedResponse._tokenIds = (List<BigInteger>) eventValues.getNonIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<OffChainEventEventResponse> offChainEventEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, OffChainEventEventResponse>() {
//            @Override
//            public OffChainEventEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(OFFCHAINEVENT_EVENT, log);
//                OffChainEventEventResponse typedResponse = new OffChainEventEventResponse();
//                typedResponse.log = log;
//                typedResponse._operateAddr = (String) eventValues.getNonIndexedValues().get(0).getValue();
//                typedResponse._targetAddr = (String) eventValues.getNonIndexedValues().get(1).getValue();
//                typedResponse._tokenIds = (List<BigInteger>) eventValues.getNonIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<OffChainEventEventResponse> offChainEventEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(OFFCHAINEVENT_EVENT));
//        return offChainEventEventFlowable(filter);
//    }
//
//    public List<PausedEventResponse> getPausedEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(PAUSED_EVENT, transactionReceipt);
//        ArrayList<PausedEventResponse> responses = new ArrayList<PausedEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            PausedEventResponse typedResponse = new PausedEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.account = (String) eventValues.getNonIndexedValues().get(0).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<PausedEventResponse> pausedEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, PausedEventResponse>() {
//            @Override
//            public PausedEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(PAUSED_EVENT, log);
//                PausedEventResponse typedResponse = new PausedEventResponse();
//                typedResponse.log = log;
//                typedResponse.account = (String) eventValues.getNonIndexedValues().get(0).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<PausedEventResponse> pausedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(PAUSED_EVENT));
//        return pausedEventFlowable(filter);
//    }
//
//    public List<RoleAdminChangedEventResponse> getRoleAdminChangedEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, transactionReceipt);
//        ArrayList<RoleAdminChangedEventResponse> responses = new ArrayList<RoleAdminChangedEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<RoleAdminChangedEventResponse> roleAdminChangedEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, RoleAdminChangedEventResponse>() {
//            @Override
//            public RoleAdminChangedEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(ROLEADMINCHANGED_EVENT, log);
//                RoleAdminChangedEventResponse typedResponse = new RoleAdminChangedEventResponse();
//                typedResponse.log = log;
//                typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.previousAdminRole = (byte[]) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.newAdminRole = (byte[]) eventValues.getIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<RoleAdminChangedEventResponse> roleAdminChangedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(ROLEADMINCHANGED_EVENT));
//        return roleAdminChangedEventFlowable(filter);
//    }
//
//    public List<RoleGrantedEventResponse> getRoleGrantedEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(ROLEGRANTED_EVENT, transactionReceipt);
//        ArrayList<RoleGrantedEventResponse> responses = new ArrayList<RoleGrantedEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<RoleGrantedEventResponse> roleGrantedEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, RoleGrantedEventResponse>() {
//            @Override
//            public RoleGrantedEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(ROLEGRANTED_EVENT, log);
//                RoleGrantedEventResponse typedResponse = new RoleGrantedEventResponse();
//                typedResponse.log = log;
//                typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<RoleGrantedEventResponse> roleGrantedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(ROLEGRANTED_EVENT));
//        return roleGrantedEventFlowable(filter);
//    }
//
//    public List<RoleRevokedEventResponse> getRoleRevokedEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(ROLEREVOKED_EVENT, transactionReceipt);
//        ArrayList<RoleRevokedEventResponse> responses = new ArrayList<RoleRevokedEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<RoleRevokedEventResponse> roleRevokedEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, RoleRevokedEventResponse>() {
//            @Override
//            public RoleRevokedEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(ROLEREVOKED_EVENT, log);
//                RoleRevokedEventResponse typedResponse = new RoleRevokedEventResponse();
//                typedResponse.log = log;
//                typedResponse.role = (byte[]) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.account = (String) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.sender = (String) eventValues.getIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<RoleRevokedEventResponse> roleRevokedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(ROLEREVOKED_EVENT));
//        return roleRevokedEventFlowable(filter);
//    }
//
//    public List<TransferEventResponse> getTransferEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(TRANSFER_EVENT, transactionReceipt);
//        ArrayList<TransferEventResponse> responses = new ArrayList<TransferEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            TransferEventResponse typedResponse = new TransferEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
//            typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
//            typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<TransferEventResponse> transferEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, TransferEventResponse>() {
//            @Override
//            public TransferEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(TRANSFER_EVENT, log);
//                TransferEventResponse typedResponse = new TransferEventResponse();
//                typedResponse.log = log;
//                typedResponse.from = (String) eventValues.getIndexedValues().get(0).getValue();
//                typedResponse.to = (String) eventValues.getIndexedValues().get(1).getValue();
//                typedResponse.tokenId = (BigInteger) eventValues.getIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<TransferEventResponse> transferEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(TRANSFER_EVENT));
//        return transferEventFlowable(filter);
//    }
//
//    public List<UnpausedEventResponse> getUnpausedEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UNPAUSED_EVENT, transactionReceipt);
//        ArrayList<UnpausedEventResponse> responses = new ArrayList<UnpausedEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            UnpausedEventResponse typedResponse = new UnpausedEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse.account = (String) eventValues.getNonIndexedValues().get(0).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<UnpausedEventResponse> unpausedEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, UnpausedEventResponse>() {
//            @Override
//            public UnpausedEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(UNPAUSED_EVENT, log);
//                UnpausedEventResponse typedResponse = new UnpausedEventResponse();
//                typedResponse.log = log;
//                typedResponse.account = (String) eventValues.getNonIndexedValues().get(0).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<UnpausedEventResponse> unpausedEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(UNPAUSED_EVENT));
//        return unpausedEventFlowable(filter);
//    }
//
//    public List<UpChainEventEventResponse> getUpChainEventEvents(TransactionReceipt transactionReceipt) {
//        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPCHAINEVENT_EVENT, transactionReceipt);
//        ArrayList<UpChainEventEventResponse> responses = new ArrayList<UpChainEventEventResponse>(valueList.size());
//        for (Contract.EventValuesWithLog eventValues : valueList) {
//            UpChainEventEventResponse typedResponse = new UpChainEventEventResponse();
//            typedResponse.log = eventValues.getLog();
//            typedResponse._operateAddr = (String) eventValues.getNonIndexedValues().get(0).getValue();
//            typedResponse._targetAddr = (String) eventValues.getNonIndexedValues().get(1).getValue();
//            typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
//            responses.add(typedResponse);
//        }
//        return responses;
//    }
//
//    public Flowable<UpChainEventEventResponse> upChainEventEventFlowable(EthFilter filter) {
//        return web3j.ethLogFlowable(filter).map(new Function<Log, UpChainEventEventResponse>() {
//            @Override
//            public UpChainEventEventResponse apply(Log log) {
//                Contract.EventValuesWithLog eventValues = extractEventParametersWithLog(UPCHAINEVENT_EVENT, log);
//                UpChainEventEventResponse typedResponse = new UpChainEventEventResponse();
//                typedResponse.log = log;
//                typedResponse._operateAddr = (String) eventValues.getNonIndexedValues().get(0).getValue();
//                typedResponse._targetAddr = (String) eventValues.getNonIndexedValues().get(1).getValue();
//                typedResponse._tokenId = (BigInteger) eventValues.getNonIndexedValues().get(2).getValue();
//                return typedResponse;
//            }
//        });
//    }
//
//    public Flowable<UpChainEventEventResponse> upChainEventEventFlowable(DefaultBlockParameter startBlock, DefaultBlockParameter endBlock) {
//        EthFilter filter = new EthFilter(startBlock, endBlock, getContractAddress());
//        filter.addSingleTopic(EventEncoder.encode(UPCHAINEVENT_EVENT));
//        return upChainEventEventFlowable(filter);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> DEFAULT_ADMIN_ROLE() {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_DEFAULT_ADMIN_ROLE,
//                Arrays.<Type>asList(),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> approve(String to, BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_APPROVE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(to),
//                new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> balanceOf(String owner) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_BALANCEOF,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(owner)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> getApproved(BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_GETAPPROVED,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> getRoleAdmin(byte[] role) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_GETROLEADMIN,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> getRoleMember(byte[] role, BigInteger index) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_GETROLEMEMBER,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role),
//                new org.web3j.abi.datatypes.generated.Uint256(index)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> getRoleMemberCount(byte[] role) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_GETROLEMEMBERCOUNT,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> grantRole(byte[] role, String account) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_GRANTROLE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role),
//                new org.web3j.abi.datatypes.Address(account)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> hasRole(byte[] role, String account) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_HASROLE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role),
//                new org.web3j.abi.datatypes.Address(account)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> isApprovedForAll(String owner, String operator) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_ISAPPROVEDFORALL,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(owner),
//                new org.web3j.abi.datatypes.Address(operator)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> name() {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_NAME,
//                Arrays.<Type>asList(),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> ownerOf(BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_OWNEROF,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> paused() {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_PAUSED,
//                Arrays.<Type>asList(),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> renounceRole(byte[] role, String account) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_RENOUNCEROLE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role),
//                new org.web3j.abi.datatypes.Address(account)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> revokeRole(byte[] role, String account) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_REVOKEROLE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes32(role),
//                new org.web3j.abi.datatypes.Address(account)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> safeTransferFrom(String from, String to, BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_safeTransferFrom,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(from),
//                new org.web3j.abi.datatypes.Address(to),
//                new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> safeTransferFrom(String from, String to, BigInteger tokenId, byte[] _data) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_safeTransferFrom,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(from),
//                new org.web3j.abi.datatypes.Address(to),
//                new org.web3j.abi.datatypes.generated.Uint256(tokenId),
//                new org.web3j.abi.datatypes.DynamicBytes(_data)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> setApprovalForAll(String operator, Boolean approved) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_SETAPPROVALFORALL,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(operator),
//                new org.web3j.abi.datatypes.Bool(approved)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> symbol() {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_SYMBOL,
//                Arrays.<Type>asList(),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> tokenByIndex(BigInteger index) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_TOKENBYINDEX,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(index)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> tokenOfOwnerByIndex(String owner, BigInteger index) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_TOKENOFOWNERBYINDEX,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(owner),
//                new org.web3j.abi.datatypes.generated.Uint256(index)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> totalSupply() {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_TOTALSUPPLY,
//                Arrays.<Type>asList(),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> transferFrom(String from, String to, BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_TRANSFERFROM,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(from),
//                new org.web3j.abi.datatypes.Address(to),
//                new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> tokenURI(BigInteger tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_TOKENURI,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> supportsInterface(byte[] interfaceId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_SUPPORTSINTERFACE,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Bytes4(interfaceId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> upChain(String _address, BigInteger _tokenId, BigInteger _heroArea, BigInteger _grade, BigInteger _season, BigInteger _powerValue, BigInteger _productionDate, String _name, String _cardTips, String _cardImage) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_UPCHAIN,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address),
//                new org.web3j.abi.datatypes.generated.Uint256(_tokenId),
//                new org.web3j.abi.datatypes.generated.Uint256(_heroArea),
//                new org.web3j.abi.datatypes.generated.Uint256(_grade),
//                new org.web3j.abi.datatypes.generated.Uint256(_season),
//                new org.web3j.abi.datatypes.generated.Uint256(_powerValue),
//                new org.web3j.abi.datatypes.generated.Uint256(_productionDate),
//                new org.web3j.abi.datatypes.Utf8String(_name),
//                new org.web3j.abi.datatypes.Utf8String(_cardTips),
//                new org.web3j.abi.datatypes.Utf8String(_cardImage)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> offChain(String _address, List<BigInteger> _tokenIds) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_OFFCHAIN,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.Address(_address),
//                new org.web3j.abi.datatypes.DynamicArray<org.web3j.abi.datatypes.generated.Uint256>(
//                        org.web3j.abi.datatypes.generated.Uint256.class,
//                        org.web3j.abi.Utils.typeMap(_tokenIds, org.web3j.abi.datatypes.generated.Uint256.class))),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    public RemoteFunctionCall<TransactionReceipt> heroDetail(BigInteger _tokenId) {
//        final org.web3j.abi.datatypes.Function function = new org.web3j.abi.datatypes.Function(
//                FUNC_HERODETAIL,
//                Arrays.<Type>asList(new org.web3j.abi.datatypes.generated.Uint256(_tokenId)),
//                Collections.<TypeReference<?>>emptyList());
//        return executeRemoteCallTransaction(function);
//    }
//
//    @Deprecated
//    public static HeroCon load(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
//        return new HeroCon(contractAddress, web3j, credentials, gasPrice, gasLimit);
//    }
//
//    @Deprecated
//    public static HeroCon load(String contractAddress, Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
//        return new HeroCon(contractAddress, web3j, transactionManager, gasPrice, gasLimit);
//    }
//
//    public static HeroCon load(String contractAddress, Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
//        return new HeroCon(contractAddress, web3j, credentials, contractGasProvider);
//    }
//
//    public static HeroCon load(String contractAddress, Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
//        return new HeroCon(contractAddress, web3j, transactionManager, contractGasProvider);
//    }
//
//    public static RemoteCall<HeroCon> deploy(Web3j web3j, Credentials credentials, ContractGasProvider contractGasProvider) {
//        return deployRemoteCall(HeroCon.class, web3j, credentials, contractGasProvider, BINARY, "");
//    }
//
//    public static RemoteCall<HeroCon> deploy(Web3j web3j, TransactionManager transactionManager, ContractGasProvider contractGasProvider) {
//        return deployRemoteCall(HeroCon.class, web3j, transactionManager, contractGasProvider, BINARY, "");
//    }
//
//    @Deprecated
//    public static RemoteCall<HeroCon> deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) {
//        return deployRemoteCall(HeroCon.class, web3j, credentials, gasPrice, gasLimit, BINARY, "");
//    }
//
//    @Deprecated
//    public static RemoteCall<HeroCon> deploy(Web3j web3j, TransactionManager transactionManager, BigInteger gasPrice, BigInteger gasLimit) {
//        return deployRemoteCall(HeroCon.class, web3j, transactionManager, gasPrice, gasLimit, BINARY, "");
//    }
//
//    protected String getStaticDeployedAddress(String networkId) {
//        return _addresses.get(networkId);
//    }
//
//    public static String getPreviouslyDeployedAddress(String networkId) {
//        return _addresses.get(networkId);
//    }
//
//    public static class ApprovalEventResponse extends BaseEventResponse {
//        public String owner;
//
//        public String approved;
//
//        public BigInteger tokenId;
//    }
//
//    public static class ApprovalForAllEventResponse extends BaseEventResponse {
//        public String owner;
//
//        public String operator;
//
//        public Boolean approved;
//    }
//
//    public static class OffChainEventEventResponse extends BaseEventResponse {
//        public String _operateAddr;
//
//        public String _targetAddr;
//
//        public List<BigInteger> _tokenIds;
//    }
//
//    public static class PausedEventResponse extends BaseEventResponse {
//        public String account;
//    }
//
//    public static class RoleAdminChangedEventResponse extends BaseEventResponse {
//        public byte[] role;
//
//        public byte[] previousAdminRole;
//
//        public byte[] newAdminRole;
//    }
//
//    public static class RoleGrantedEventResponse extends BaseEventResponse {
//        public byte[] role;
//
//        public String account;
//
//        public String sender;
//    }
//
//    public static class RoleRevokedEventResponse extends BaseEventResponse {
//        public byte[] role;
//
//        public String account;
//
//        public String sender;
//    }
//
//    public static class TransferEventResponse extends BaseEventResponse {
//        public String from;
//
//        public String to;
//
//        public BigInteger tokenId;
//    }
//
//    public static class UnpausedEventResponse extends BaseEventResponse {
//        public String account;
//    }
//
//    public static class UpChainEventEventResponse extends BaseEventResponse {
//        public String _operateAddr;
//
//        public String _targetAddr;
//
//        public BigInteger _tokenId;
//    }
//}
